Page({
  data: {
    phone: '',
    code: '',
    countdown: 0,
    timer: null
  },
  
  onLoad() {
    // 加载已保存的手机信息
    const userInfo = wx.getStorageSync('userInfo') || {}
    if (userInfo.phone) {
      this.setData({
        phone: userInfo.phone
      })
    }
  },
  
  onUnload() {
    // 页面卸载时清除定时器
    if (this.data.timer) {
      clearInterval(this.data.timer)
    }
  },
  
  onPhoneInput(e) {
    this.setData({
      phone: e.detail.value
    })
  },
  
  onCodeInput(e) {
    this.setData({
      code: e.detail.value
    })
  },
  
  // 验证手机号格式
  validatePhone(phone) {
    const reg = /^1[3-9]\d{9}$/
    return reg.test(phone)
  },
  
  getCode() {
    const { phone, countdown } = this.data
    
    if (!phone || !phone.trim()) {
      wx.showToast({
        title: '请输入手机号码',
        icon: 'none'
      })
      return
    }
    
    if (!this.validatePhone(phone)) {
      wx.showToast({
        title: '手机号格式不正确',
        icon: 'none'
      })
      return
    }
    
    if (countdown > 0) {
      return
    }
    
    // 生成6位随机验证码（开发测试用）
    const code = Math.floor(100000 + Math.random() * 900000).toString()
    
    // 保存验证码到本地存储（开发测试用）
    const verifyCode = {
      phone: phone.trim(),
      code: code,
      expireTime: Date.now() + 10 * 60 * 1000 // 10分钟后过期
    }
    wx.setStorageSync('sms_code_' + phone.trim(), verifyCode)
    
    // 在控制台输出验证码（开发测试用，方便查看）
    console.log('========== 短信验证码（开发测试） ==========')
    console.log('手机号:', phone.trim())
    console.log('验证码:', code)
    console.log('有效期: 10分钟')
    console.log('==========================================')
    
    // 发送验证码（这里需要对接后端API）
    // 实际项目中，应该调用后端接口发送验证码：
    // wx.request({
    //   url: 'https://your-api.com/api/sms/send-code',
    //   method: 'POST',
    //   data: { phone: phone.trim() },
    //   success: (res) => { ... }
    // })
    
    wx.showToast({
      title: '验证码已发送（开发模式：查看控制台）',
      icon: 'success',
      duration: 2000
    })
    
    // 开始倒计时
    this.setData({
      countdown: 60
    })
    
    const timer = setInterval(() => {
      const newCountdown = this.data.countdown - 1
      if (newCountdown <= 0) {
        clearInterval(timer)
        this.setData({
          countdown: 0,
          timer: null
        })
      } else {
        this.setData({
          countdown: newCountdown
        })
      }
    }, 1000)
    
    this.setData({
      timer: timer
    })
  },
  
  bind() {
    const { phone, code } = this.data
    
    if (!phone || !phone.trim()) {
      wx.showToast({
        title: '请输入手机号码',
        icon: 'none'
      })
      return
    }
    
    if (!this.validatePhone(phone)) {
      wx.showToast({
        title: '手机号格式不正确',
        icon: 'none'
      })
      return
    }
    
    if (!code || !code.trim()) {
      wx.showToast({
        title: '请输入短信验证码',
        icon: 'none'
      })
      return
    }
    
    // 验证验证码（开发测试：从本地存储验证）
    const storedCode = wx.getStorageSync('sms_code_' + phone.trim())
    if (storedCode && storedCode.code === code.trim()) {
      // 检查是否过期
      if (Date.now() > storedCode.expireTime) {
        wx.showToast({
          title: '验证码已过期',
          icon: 'none'
        })
        return
      }
      // 验证成功，删除验证码
      wx.removeStorageSync('sms_code_' + phone.trim())
    } else {
      // 开发测试：如果本地没有验证码，允许通过（实际项目中应该删除此逻辑）
      if (!storedCode) {
        console.warn('开发模式：未找到验证码，自动通过验证')
      } else {
        wx.showToast({
          title: '验证码错误',
          icon: 'none'
        })
        return
      }
    }
    
    // 更新本地存储
    const userInfo = wx.getStorageSync('userInfo') || {}
    userInfo.phone = phone.trim()
    wx.setStorageSync('userInfo', userInfo)
    
    // 更新全局数据
    const app = getApp()
    if (!app.globalData.userInfo) {
      app.globalData.userInfo = {}
    }
    app.globalData.userInfo.phone = phone.trim()
    
    wx.showToast({
      title: '绑定成功',
      icon: 'success'
    })
    
    setTimeout(() => {
      wx.navigateBack()
    }, 1500)
  }
})


